import { Response, Request } from 'express';
import { port } from '../utils/constants'
import { hanldeImgDelAndRename, handlePath } from '../utils'
import { multerConfig } from './multerConfig'


const fileName = 'file'  
const BaseURL = 'http://localhost:' + port
const imgPath = '/public/avatar/' 

export const uploadAvatarImg = (req: Request, res:Response) => {
  // TODO 返回一个封装好的上传文件的接口，给 [controller] 使用
  return new Promise((resolve, reject) => {
    multerConfig.single(fileName)(req, res, function (err: Error) {
      // *传递的图片格式不正确，就会reject出去
      if (err) reject(err)
      if (!req.file) reject('请传入图片！')      
      else {
        // *图片上传成功
        // 对图片进行去重删除和重命名
        hanldeImgDelAndRename(req.body.id, req.file.filename, handlePath('../../public/avatar'))
        // 将图片名称进行分隔为: [时间戳, jpg]
        const img = req.file.filename.split('.')
        resolve({
          id: req.body.id,
          // 拼接成完整的服务器静态资源图片路径
          img_src: BaseURL + imgPath + img[0] + '.' + req.body.id + '.' + img[1]
        })
      }
    })
  })
}